package com.cy.kotlin2test;

public class Parent {
    public Parent() {
        System.out.println("父类--构造器");
    }
    // 初始化块
    {
        System.out.println("父类--初始化块1");
    }
    // 变量
    public TestFather p_Field = new TestFather(1);

    // 初始化块
    {
        System.out.println("父类--初始化块2");
    }
    // 构造器      


    // 静态初始化块
    static {
        System.out.println("父类--静态初始化块1");
    }

    // 静态变量      其实可以用普通的静态函数来代替，以后完善吧
    public static TestFather p_StaticField = new TestFather();
    // 静态初始化块
    static {
        System.out.println("父类--静态初始化块2");
    }


    // 程序入口
    public static void main(String[] args) {
        new SubClass();
    }

    public static class TestSon {
        public TestSon() {
            System.out.println("子类--静态变量");
        }

        public TestSon(int a) {
            System.out.println("子类--变量");
        }
    }

    public static class TestFather {
        public TestFather() {
            System.out.println("父类--静态变量");
        }

        public TestFather(int a) {
            System.out.println("父类--变量");
        }
    }

    public static class SubClass extends Parent {
        public static void staticMethod(){
            System.out.println("子类--静态方法");
        }
        // 静态变量
        public static TestSon s_StaticField = new TestSon();
        // 变量
        public TestSon s_Field = new TestSon(1);

        // 静态初始化块
        static {
            System.out.println("子类--静态初始化块");
        }

        // 初始化块
        {
            System.out.println("子类--初始化块");
        }

        // 构造器
        public SubClass() {
            System.out.println("子类--构造器");
        }
    }
}